package com.investindo.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.investindo.bean.Ativo;
import com.investindo.dao.EuInvestindoConnectionFactory;

public class AtivosUtil {

	Connection conn = null;
	PreparedStatement stmt = null;
	String sql = null;

	static ArrayList<Ativo> ativoList = null;

	public JSONObject venderAcao(int idUsuario, int idAtivo, int qtdeVenda, float valorAcao) {

		String sql = "";
		int qtdAcoes = 0;
		JSONObject meuAtivo = new JSONObject();
		try {
			conn = EuInvestindoConnectionFactory.getConn();

			// Pegar o valor da 
			sql = "Select quantidade From rel_usuario_acao where id_usuario = ? and id_ativo = ?";

			stmt = conn.prepareStatement(sql);
			stmt.setInt(1, idAtivo);
			
			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
				val = rs.getFloat("valor");
			}
			

			rs.close();
			stmt.close();

		} catch (Exception e) {
			System.out.println(e);
		}
		return meuAtivo;
	}

	public JSONObject comprarAcao(int idUsuario, int idAtivo, int qtdeCompra) {

		String sql = "";
		JSONObject meuAtivo = new JSONObject();
		try {
			conn = EuInvestindoConnectionFactory.getConn();

			sql = "Select * From ativo where codigo = ? ";

			stmt = conn.prepareStatement(sql);

			stmt.setInt(1, idUsuario);
			stmt.setInt(2, idAtivo);
			stmt.setInt(3, qtdeCompra);

			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
			}
			// meuAtivo.put("id_ativo", ativo.getId());
			// meuAtivo.put("ativo", ativo.getAtivo());
			// meuAtivo.put("atividade", ativo.getAtividade());
			// meuAtivo.put("class_setorial", ativo.getClassSetorial());
			// meuAtivo.put("oscilacao", ativo.getOsc());
			// meuAtivo.put("limCompra", ativo.getLimCompra());
			// meuAtivo.put("limVenda", ativo.getLimVenda());

			rs.close();
			stmt.close();

		} catch (Exception e) {
			System.out.println(e);
		}
		return meuAtivo;
	}

	public JSONObject getDetalheAtivo(String ativoCod) {

		ativoList = new ArrayList<Ativo>();
		Ativo ativo = null;
		String sql = "";
		JSONObject meuAtivo = new JSONObject();
		try {
			conn = EuInvestindoConnectionFactory.getConn();

			sql = "Select * From ativo where codigo = ? ";

			stmt = conn.prepareStatement(sql);

			stmt.setString(1, ativoCod);

			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
				ativo = new Ativo();
				ativo.setId(rs.getInt("id_ativo"));
				ativo.setAtivo(rs.getString("ativo"));
				ativo.setAtividade(rs.getString("atividade"));
				ativo.setOsc(rs.getFloat("oscilacao"));
				ativo.setLimCompra(rs.getFloat("lim_compra"));
				ativo.setLimVenda(rs.getFloat("lim_venda"));
				ativo.setClassSetorial(rs.getString("classif_setorial"));
			}
			meuAtivo.put("id_ativo", ativo.getId());
			meuAtivo.put("ativo", ativo.getAtivo());
			meuAtivo.put("atividade", ativo.getAtividade());
			meuAtivo.put("class_setorial", ativo.getClassSetorial());
			meuAtivo.put("oscilacao", ativo.getOsc());
			meuAtivo.put("limCompra", ativo.getLimCompra());
			meuAtivo.put("limVenda", ativo.getLimVenda());

			rs.close();
			stmt.close();

		} catch (Exception e) {
			System.out.println(e);
		}

		finally {

			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException sqlex) {
					// ignore -- as we can't do anything about it here
				}

				stmt = null;
			}

			/*
			 * if (conn != null) { try { conn.close(); } catch (SQLException
			 * sqlex) { // ignore -- as we can't do anything about it here }
			 * 
			 * conn = null; }
			 */
		}
		return meuAtivo;

	}

	public String getTodosAtivos() {

		ativoList = new ArrayList<Ativo>();
		String sql = "";
		try {
			conn = EuInvestindoConnectionFactory.getConn();

			/*
			 * sAtivo a; for (int i = 0; i < 20; i++) { a = new Ativo();
			 * a.setAtivo("Ativo " + i); ativoList.add(a); }
			 */

			sql = "Select * From ativo";

			stmt = conn.prepareStatement(sql);

			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
				Ativo ativo = new Ativo();
				ativo.setCodigo(rs.getString("codigo"));
				ativo.setId(rs.getInt("id_ativo"));
				ativoList.add(ativo);
			}

			rs.close();
			stmt.close();

		} catch (Exception e) {
			System.out.println(e);
		}

		finally {

			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException sqlex) {
					// ignore -- as we can't do anything about it here
				}

				stmt = null;
			}

			/*
			 * if (conn != null) { try { conn.close(); } catch (SQLException
			 * sqlex) { // ignore -- as we can't do anything about it here }
			 * 
			 * conn = null; }
			 */
		}
		return this.getJson("ativos");

	}

	public String getJson(Ativo at) {
		JSONObject obj = new JSONObject();
		obj.put("ativo", at.getAtivo());
		JSONArray array = new JSONArray();
		array.add(obj);
		String returnJson = "" + array + "";
		System.out.println(returnJson);
		return returnJson;
	}

	public String getJson(String nomeDado) {
		JSONArray jsonArray = JSONArray.fromObject(ativoList);
		// String returnJson = "{" + nomeDado + ":" + jsonArray + "}";
		String returnJson = "{\"" + nomeDado + "\":" + jsonArray + "}";
		// System.out.println(returnJson);
		return returnJson;
	}
}
